from django.db import models

# 定义订单状态的可选值元组，格式为(数据库存储值, 显示值)
STATE = (
    ('待支付', '待支付'),
    ('已支付', '已支付'),
    ('发货中', '发货中'),
    ('已签收', '已签收'),
    ('退货中', '退货中'),
)

class CartInfos(models.Model):
    """购物车信息模型，用于存储用户添加到购物车的商品记录"""
    # 自增主键字段，作为购物车项的唯一标识
    id = models.AutoField(primary_key=True)
    # 购买数量字段，存储用户在购物车中选择的商品数量
    quantity = models.IntegerField('购买数量')
    # 商品ID字段，存储关联商品的ID（与商品表的外键关联简化实现）
    commodityInfos_id = models.IntegerField('商品ID')
    # 用户ID字段，存储关联用户的ID（与用户表的外键关联简化实现）
    user_id = models.IntegerField('用户ID')

    def __str__(self):
        """返回购物车项的字符串表示，用于调试和显示"""
        return str(self.id)

    class Meta:
        """模型元数据配置"""
        verbose_name = '购物车'          # 单数形式的显示名称（用于Admin界面）
        verbose_name_plural = '购物车'  # 复数形式的显示名称（用于Admin界面）

class OrderInfos(models.Model):
    """订单信息模型，用于存储用户提交的订单记录"""
    # 自增主键字段，作为订单的唯一标识
    id = models.AutoField(primary_key=True)
    # 订单总价字段，存储订单的总金额（注意：FloatField可能存在精度问题）
    price = models.FloatField('订单总价')
    # 创建时间字段，自动记录订单创建的日期（仅在创建时更新）
    created = models.DateField('创建时间', auto_now_add=True)
    # 用户ID字段，存储下单用户的ID（与用户表的外键关联简化实现）
    user_id = models.IntegerField('用户ID')
    # 订单状态字段，使用选择列表限制状态值（从STATE元组中选择）
    state = models.CharField('订单状态', max_length=20, choices=STATE)

    def __str__(self):
        """返回订单的字符串表示，用于调试和显示"""
        return str(self.id)

    class Meta:
        """模型元数据配置"""
        verbose_name = '订单信息'          # 单数形式的显示名称（用于Admin界面）
        verbose_name_plural = '订单信息'  # 复数形式的显示名称（用于Admin界面）